package com.xiaobao.service.impl;

import com.xiaobao.mapper.UserMapper;
import com.xiaobao.pojo.User;
import com.xiaobao.service.KaoyanInfoService;
import com.xiaobao.service.UserInfoService;
import com.xiaobao.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    private final UserMapper userMapper;
    private final UserInfoService userInfoService;
    private final KaoyanInfoService kaoyanInfoService;

    public UserServiceImpl(UserMapper userMapper, UserInfoService userInfoService, KaoyanInfoService kaoyanInfoService) {
        this.userMapper = userMapper;
        this.userInfoService = userInfoService;
        this.kaoyanInfoService = kaoyanInfoService;
    }

    /**
     * 修改用户信息
     * 此方法用于更新用户数据它接收一个User对象作为参数，
     * 该对象包含了需要更新的用户信息通过调用userMapper的UpdateUser方法
     * 来执行更新操作，并返回一个布尔值，指示更新操作是否成功
     *
     * @param user 需要更新的用户对象，包含用户的相关信息
     * @return boolean 表示更新操作是否成功的布尔值成功返回true，否则返回false
     */
    @Override
    public boolean updateUser(User user) {
        return userMapper.UpdateUser(user);
    }


    //添加用户
    @Override
    public boolean addUser(User user) {
        //用户id自动生成由20242160A****递增
        //用户传进来的id是空的
        //获取用户信息
        User[] users = userMapper.getAllUser();
        //获取用户数量
        int length = users.length;
        //找出最大id
        int max = 0;
        for (User value : users) {
            //只比较id中的后四位
            String Oid = value.getId().substring(9);
            int id = Integer.parseInt(Oid);
            if (id > max) {
                max = id;
            }
        }
        user.setId("20242160A" + user.getId());
        if (userMapper.addUser(user)) {
            try {
                //添加考研信息
                kaoyanInfoService.addDefaultKaoyanInfo(user.getId());
                //添加用户详细信息基本信息
                userInfoService.addDefaultUserInfo(user.getId(), user.getUserName());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            return true;
        }
        return false;
    }

    //删除用户
    @Override
    public boolean deleteUser(String id) {
        //删除用户详细信息，考研信息，用户等等
        try {
            userInfoService.deleteUserInfo(id);
            kaoyanInfoService.deleteKaoyanInfo(id);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return userMapper.deleteUser(id);
    }
}
